A barcode is an optical machine-readable representation of data, which identifies, for example, a product or object. The barcode has become a ubiquitous element in commercial and industrial use. For example, the barcode not only is used to identify items, e.g., product or objects, but it also helps to track items and provide other commercial uses, e.g., provide product information, discounts or special marketing offers.
Barcodes can be used to track numerous different items, ranging from rental cars to airline luggage. Barcodes can also be used to provide delivery information for sorting and sequencing of items into a delivery order sequence. For example, barcodes are used with first class mail, registered mail, express mail and parcels, as well as circulars and other types of mass mailings in order to sequence such items into a delivery order. By way of example, the United States Postal System (USPS) uses barcode symbology known as POSTNET (Postal Numeric Encoding Technique) to assist in sorting and sequencing the mail. POSTNET is being replaced by the Intelligent Mail barcode (also known as OneCode Solution).
Barcodes systematically represent data by varying the widths and spacings of parallel lines (bars). One type of barcode that is used mainly for postal applications is a 4-state barcode. This type of barcode has constant bar and space width. Data is encoded in the barcode by varying the height of the bars. There are four types of parallel lines (bars): tracker, ascender, descender and full. A tracker bar spans the middle third of the coding region; whereas, an ascender bar spans the top and middle third of the coding region and a descender bar spans the middle and bottom third of the coding region. A full bar spans the entire coding region. In the past most of these barcodes were designed with an extra bar at either end (called guard or framing bars) to help avoid misalignment during decoding. They might also have internal sequences of bars with fixed patterns (UPU S18d) for the same purpose. Newer barcode designs, however, often use more integrated methods for barcode alignment that do not require these alignment specific bars.
Barcodes can be scanned by optical scanners called barcode readers. These optical scanners can be a handheld device, e.g., portable digital assistants, stationary devices or other computing devices. In any scenario, the barcode reader is designed to read and subsequently decode the barcode using different decoding processes. Decoding can also be performed by a separate computing system, which receives the barcode information from the scanner.
In any event, detecting and decoding of barcodes is a complicated process, particularly when the barcode is dilated. For example, a barcode scanner may have difficulty detecting the barcode due to a lack of white space or separation between the different parallel lines, known as dilation, e.g., adjacent bars touch one another. Illustratively, one process of detecting of barcodes is Connected Region Analysis. This process can be used to initially locate bars and then link them together into sequences that are treated as potential barcodes. Another process is known to scan across the image and search for black/white repeated sequences that are indicative of scanning through the tracker section (middle) of a barcode. Both of these methods fail when the bars are dilated so much that they touch adjacent bars. Likewise, the various decoding methods require some level of horizontal separation between bars. The separation does not need to be perfect but there must be some level of separation for successful decodes.